package com.co.danmaku.controller;

import com.co.common.entity.Result;
import com.co.common.util.IdWorker;
import com.co.danmaku.pojo.Danmaku;
import com.co.danmaku.service.DanmakuService;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author ldl.plus
 * @date 2020年06月22日  0:41
 */

@RestController
@RequestMapping("/danmaku")

public class DanmakuController {

    @Autowired
    private DanmakuService danmakuService;

    public IdWorker idWorker = new IdWorker();

    /**
     * CjDanmaku分页条件搜索实现
     *
     * @param danmaku
     * @param page
     * @param size
     * @return
     */
    @PostMapping(value = "/search/{page}/{size}")
    public Result<PageInfo<Danmaku>> findPage(@RequestBody(required = false) Danmaku danmaku, @PathVariable int page, @PathVariable int size) {
        //调用CjDanmakuService实现分页条件查询CjDanmaku
        PageInfo<Danmaku> pageInfo = danmakuService.findPage(danmaku, page, size);
        return Result.ok(pageInfo);
    }

    /**
     * CjDanmaku分页搜索实现
     *
     * @param page:当前页
     * @param size:每页显示多少条
     * @return
     */
    @GetMapping(value = "/search/{page}/{size}")
    public Result<PageInfo<Danmaku>> findPage(@PathVariable int page, @PathVariable int size) {
        //调用CjDanmakuService实现分页查询CjDanmaku
        PageInfo<Danmaku> pageInfo = danmakuService.findPage(page, size);
        return Result.ok(pageInfo);
    }

    /**
     * 多条件搜索品牌数据
     *
     * @param danmaku
     * @return
     */
    @PostMapping(value = "/search")
    public Result<List<Danmaku>> findList(@RequestBody(required = false) Danmaku danmaku) {
        //调用CjDanmakuService实现条件查询CjDanmaku
        List<Danmaku> list = danmakuService.findList(danmaku);
        return Result.ok(list);
    }

    /**
     * 根据ID删除品牌数据
     *
     * @param id
     * @return
     */
    @DeleteMapping(value = "/{id}")
    public Result delete(@PathVariable String id) {
        //调用CjDanmakuService实现根据主键删除
        danmakuService.delete(id);
        return Result.ok();
    }

    /**
     * 修改CjDanmaku数据
     *
     * @param danmaku
     * @param id
     * @return
     */
    @PutMapping(value = "/{id}")
    public Result update(@RequestBody Danmaku danmaku, @PathVariable String id) {
        //设置主键值
        danmaku.setId(id);
        //调用CjDanmakuService实现修改CjDanmaku
        danmakuService.update(danmaku);
        return Result.ok();
    }

    /**
     * 新增CjDanmaku数据
     *
     * @param danmaku
     * @return
     */
    @PostMapping("/add")
    public Result<?> add(@RequestBody Danmaku danmaku) {
        // TODO: 2020/7/4 整个逻辑有问题，弹幕cid和username没存，播放时video的cid没有获取
        System.out.println(danmaku);
        long id = idWorker.nextId();
        danmaku.setId(String.valueOf(id));
        //调用CjDanmakuService实现添加CjDanmaku
        danmakuService.add(danmaku);
        return Result.ok();
    }

    /**
     * 根据ID查询CjDanmaku数据
     *
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public Result<Danmaku> findById(@PathVariable String id) {
        //调用DanmakuService实现根据主键查询CjDanmaku
        Danmaku danmaku = danmakuService.findById(id);
        return Result.ok(danmaku);
    }

    /**
     * 查询CjDanmaku全部数据
     *
     * @return
     */
    @GetMapping
    public Result<List<Danmaku>> findAll() {
        //调用CjDanmakuService实现查询所有CjDanmaku
        List<Danmaku> list = danmakuService.findAll();
        return Result.ok(list);
    }
}
